package set;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;

import org.junit.Test;

public class HashSetDemo {
	@Test
	public void create() {
		HashSet<String> set = new HashSet<>();
		set.add("abc");
		set.add("def");
		set.add("hijk");
		set.add("lmn");
		set.add("lmn");
		set.add("zyu");
		set.add(null);
		set.add(null);
		System.out.println(set.size());
		
		// 如何把list中重复的只留一份
		List<Integer> list = Arrays.asList(11,22,33,11,22,33,44);
		HashSet<Integer> set2 = new HashSet<>(list);
		System.out.println(set2);
	}
	
	@Test
	public void useful() {
		HashSet<String> set = new HashSet<>();
		// 1.添加
		set.add("abc");
		set.add("def");
		set.add("hijk");
		set.add("lmn");
		set.add("zyu");
		// 2.是否包含
		boolean contains = set.contains("abc");
		// 3.长度
		int size = set.size();
		// 4.根据元素移除
		boolean remove = set.remove("abc");
		// 5.是否为空
		boolean empty = set.isEmpty();
		// 6. 转换为对象数组
		Object[] array = set.toArray();
		// 7.清空
		set.clear();
	}
	
	@Test
	public void foreach() {
		HashSet<String> set = new HashSet<>();
		// 1.添加
		set.add("abc");
		set.add("def");
		set.add("hijk");
		set.add("lmn");
		set.add("zyu");
		//1.增强for
		for (String s : set) {
			System.out.println(s);
		}
		System.out.println("----------------------");
		
		//2.只有父迭代器
		Iterator<String> it = set.iterator();
		while(it.hasNext()) {
			String s = it.next();
			System.out.println(s);
		}
		System.out.println("----------------------");
		
		//3.foreach
		set.forEach(new Consumer<String>() {
			@Override
			public void accept(String t) {
				System.out.println(t);
			}
		});
		System.out.println("----------------------");
		set.forEach(System.out::println);
	}
}











